#ifndef UART_H
#define UART_H

#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>

// 定义全局变量
extern int uartfd;  // UART 文件描述符
extern unsigned short crc16;  // CRC 校验

// 串口初始化函数声明
int uart_init(int *uartfd);

// 串口重连函数声明
int uart_reconnect(int *uartfd);

// 发送数据到 UART 的函数声明
int uart_send_data(const uint8_t* data, size_t length);

// 从 UART 读取数据的函数声明
int uart_read_data(uint8_t* buffer, size_t length);

// 计算 CRC16 校验码的函数声明
uint16_t calculate_crc16(const uint8_t* data, size_t length);

// 发送带有 CRC 校验的数据的函数声明
void uart_send_command(void* cmd, size_t cmd_size);

#endif // UART_H
